/**
 * 文件名：JdbcDriverCleanupListener.java
 *
 * 创建人：Elvin Zhao - 279152260@qq.com
 *
 * 创建时间：2025年6月23日 下午10:12:06
 *
 * 版权所有：FNII
 */
package com.jeeplus.modules.sys.listener;

import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;

import java.util.Enumeration;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class JdbcDriverCleanupListener implements ServletContextListener {

	private static final Logger logger = LoggerFactory.getLogger(JdbcDriverCleanupListener.class);

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		// 不需要初始化操作
	}

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		// 获取当前类加载器注册的所有JDBC驱动
		Enumeration<Driver> drivers = DriverManager.getDrivers();

		while (drivers.hasMoreElements()) {
			Driver driver = drivers.nextElement();
			try {
				// 注销驱动
				DriverManager.deregisterDriver(driver);
				// 注销 JDBC 驱动
				logger.info("成功注销JDBC驱动: {}", driver.getClass().getName());
			} catch (SQLException e) {
				logger.error("注销JDBC驱动失败 [{}]: {}", driver.getClass().getName(), e.getMessage(), e);
			}
		}
	}
}